
package avaliacao.Handler;

import avaliacao.Constantes;
import avaliacao.DTO.DTOAvaliador;
import avaliacao.DAO.DAOAvaliador;
import avaliacao.Util;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class FormularioSenhaHandler implements HandlerInterface {

     DAOAvaliador daoAvaliador = new DAOAvaliador();

    public String process(HttpServletResponse response, HttpServletRequest request) {

        DTOAvaliador avaliador = (DTOAvaliador)request.getSession().getAttribute("avaliador");

        if(avaliador == null)
            return "/login.jsp";

        String resultado = Constantes.MEC_OK_CADASTRO;
        String senhaAntiga = request.getParameter(Constantes.MEC_SENHA_ANTIGA_FORM_CAMPO).trim();
        String senhaNova = request.getParameter(Constantes.MEC_SENHA_NOVA_FORM_CAMPO).trim();
        String senhaConfirmacao = request.getParameter(Constantes.MEC_SENHA_CONFIRMACAO_FORM_CAMPO).trim();

        if (!verificarCampos(senhaNova))
            resultado = Constantes.MEC_ERR_PREENCHIMENTO_FORM_INVALIDO;

        if(avaliador.getSenha().equals(Util.encriptaSenha(senhaAntiga))
                && senhaNova.equals(senhaConfirmacao))
        {
                if(!daoAvaliador.trocaSenha(avaliador,senhaNova))
                    resultado = Constantes.MEC_ERR_CADASTRO;
        }
        else
            resultado =Constantes.MEC_ERR_PREENCHIMENTO_FORM_INVALIDO;

        request.setAttribute(Constantes.MEC_ATRIBUTO_STATUS, resultado);
        
        return "/edicaoSenha.jsp";
    }

    private boolean verificarCampos(String senhaNova) {
        Boolean check = true;

        if(senhaNova.length() > Constantes.MEC_AVALIADOR_SENHA_TAM_MIN)
            check = false;

         return check;
    }
}
